import { getChannelList, getAllChannelList } from '@/api/channels'
export default {
  // 开启命名空间
  namespaced: true,
  state: {
    // 我的频道
    channelList: [],
    // 全部频道
    AllchannelList: []
  },
  mutations: {
    // 设置频道
    setChannelList (state, payload) {
      state.channelList = payload
    },
    // 设置全部频道
    setAllChannelList (state, payload) {
      state.AllchannelList = payload
    },
    // 添加频道
    addChannel (state, payload) {
      // 追加，因为可选频道是计算属性计算出来的，我的频道多一个，可选频道就少一个
      state.channelList.push(payload)
    },
    // 删除频道
    delChannel (state, payload) {
      // 如果传递过来的 对象（payload）里的id和 channelList 里的相同就删除掉
      state.channelList = state.channelList.filter(item => +item.id !== +payload.id)
    }
  },
  actions: {
    // 发请求获取频道列表
    async getChannelList (context) {
      const res = await getChannelList()
      // console.log(res.data.channels)
      context.commit('setChannelList', res.data.channels)
    },
    // 发请求获取全部频道列表
    async getAllChannelList (context) {
      const res = await getAllChannelList()
      // console.log(res.data.channels)
      context.commit('setAllChannelList', res.data.channels)
    }
  },
  getters: {
    // 可选频道
    optionalChannels (state) {
      // 对 allChannels 中的元素进行过滤, 只保留那些没有在 channels 中出现的元素
      // 在全部的频道里面过滤，如果我的频道里有和全部频道里一样就不留下，不一样的留下
      // return state.AllchannelList.filter(channel => state.channelList.findIndex(item => +item.id === +channel.id) === -1)
      // 从全部频道中过滤我的频道，如果等于-1就是没找到，没找到就是要添加到剩余的频道中，找到了证明我的频道中有
      return state.AllchannelList.filter(item => {
        const idx = state.channelList.findIndex(v => +v.id === +item.id)
        if (idx === -1) {
          return true
        } else {
          return false
        }
      })
    }
  }
}
